﻿namespace BootstrapBlazor.Components;

/// <summary>
/// 保存 <see cref="NavbarDropdown"/> 组件当前状态的信息
/// </summary>
public record NavbarDropdownState : NavbarBase
{
    /// <summary>
    /// 获得/设置 当前 <see cref="NavbarDropdown"/> 组件的可见性。
    /// </summary>
    internal bool DropdownVisible { get; init; }

    /// <summary>
    /// 获得/设置 所属 <see cref="NavbarGroup"/> 显示位置。
    /// </summary>
    internal bool IsTail { get; init; }

    /// <summary>
    /// 获得/设置 当前 <see cref="NavbarDropdown"/> 组件的层次索引，从1开始
    /// </summary>
    internal int Indent { get; init; } = 1;

    /// <summary>
    /// 获得/设置 指示光标是否悬浮在菜单切换器上。
    /// </summary>
    internal bool HoverToggler { get; set; }

    /// <summary>
    /// 获得/设置 指示光标是否悬浮在菜单下拉列表上。
    /// </summary>
    internal bool HoverMenu { get; set; }

    /// <summary>
    /// 获得 当前显示状态
    /// </summary>
    internal string DropdownVisibleString => DropdownVisible ? "true" : "false";

    /// <summary>
    /// 获得 浮动显示位置。
    /// </summary>
    internal Placement FloatingPlacement => IsRTL
        ? (IsTail ? Placement.LeftEnd : Placement.LeftStart)
        : (IsTail ? Placement.RightEnd : Placement.RightStart);

    /// <summary>
    /// 获得 当前 <see cref="Navbar"/> 组件是否包含浮动菜单
    /// </summary>
    internal bool HasFloatingMenu => Mode == NavbarMode.VerticalMixin || Mode == NavbarMode.VerticalSmall;

    /// <summary>
    /// 获得 当前 <see cref="Navbar"/> 组件是否包含弹出菜单
    /// </summary>
    internal bool HasPopoutMenu => Mode == NavbarMode.VerticalMixin || Mode == NavbarMode.VerticalPopout;
    
}
